package com.medsys.delegate;

import com.medsys.view.Menu;

public class Main {

	/**
	 * @see Constante utilizada para armazenar o usuario do sistema, que pode
	 *      ser: Medicos Usuario - med | Senha: 123 Funcionario: Usuario - func
	 *      | Senha: 321
	 */
	private static String usuario = "";

	private static Menu menu = Menu.getInstance();
	private static PacienteDelegate pacienteDelegate = new PacienteDelegate();
	private static MedicoDelegate medicoDelegate = new MedicoDelegate();
	private static ConsultaDelegate consultaDelegate = new ConsultaDelegate();
	private static RelatorioDelegate relatorioDelegate = new RelatorioDelegate();

	/**
	 * @see Classe principal de entrada do sistema
	 * @param args
	 */
	public static void main(String[] args) {

		boolean login = false;
		login = autenticar();

		if (login == true) {
			int op = 0;
			do {
				menu.show();
				op = menu.readInt("Digite uma das opcoes acima: ");
				acao(op);
			} while (op != 0);
		}
		menu.exit();

	}

	public static boolean autenticar() {
		String user = menu.readStr("Usuario: ");
		String pass = menu.readStr("Senha: ");
		if (user.equals("med") && pass.equals("123")) {
			usuario = "medico";
			System.out.println("Bem vindo Doutor!");
			return true;
		}
		if (user.equals("func") && pass.equals("321")) {
			usuario = "medico";
			System.out.println("Bem vindo Funcionario!");
			return true;
		} else {
			System.out.println("Usuario ou senha invalido.");
			return false;
		}
	}

	public static void acao(int op) {
		switch (op) {
		case 1:
			pacienteDelegate.cadastrar();
			break;
		case 2:
			pacienteDelegate.consultar();
			break;
		case 3:
			pacienteDelegate.atualizar();
			break;
		case 4:
			medicoDelegate.cadastrar();
			break;
		case 5:
			medicoDelegate.consultar();
			break;
		case 6:
			medicoDelegate.atualizar();
			break;
		case 7:
			consultaDelegate.cadastrar();
			break;
		case 8:
			consultaDelegate.consultar();
			break;
		case 9:
			consultaDelegate.atualizar();
			break;
		case 10:
			relatorioDelegate.gerarPdfAgendamentosPorPeriodo();
			break;
		case 11:
			relatorioDelegate.gerarPdfDaListaDePacientes();
			break;
		case 12:
			relatorioDelegate.gerarPdfDeReceituario();
			break;
		case 13:
			relatorioDelegate.historicoPaciente();
			break;
		case 14:
			relatorioDelegate.atestadoMedico();
			break;
		}
	}

}
